package com.remoting.api.request;

import com.remoting.api.expression.ExpressionParser;
import com.remoting.api.registry.bean.HostInfo;
import com.remoting.api.registry.bean.ServiceImportInfo;

import java.util.Map;

/**
 * 请求处理
 * <p>说明:</p>
 * <li></li>
 *
 * @Author DuanYong
 * @Since 2019/5/10 14:41
 * @Version 1.0
 */
public interface RequestHandler {
    /**
     * 初始化
     * <p>说明:</p>
     * <li></li>
     * @author DuanYong
     * @param expressionParser 表达式解析
     * @return RequestHandler
     * @since 2019年1月6日下午7:18:51
     */
    RequestHandler init(ExpressionParser expressionParser);

    /**
     * 解析值
     * <p>说明:</p>
     * <li></li>
     * @param serviceInfo 服务信息
     * @param host 主机信息
     * @param data 参数
     * @param value 值
     * @return 解析后的值
     * @since 2017年3月20日下午5:48:44
     */
    String parserValue(ServiceImportInfo serviceInfo, HostInfo host, Map<String, Object> data, String value);
    /**
     * 解析KEY
     * <p>说明:</p>
     * <li></li>
     * @author DuanYong
     * @param key key
     * @param value 值
     * @param data 数据
     * @since 2017年6月21日下午3:44:58
     */
    void parserKey(String key, String value, Map<String, Object> data);
}
